print("-------------10.2 写入文件-------------")

print("-------------10.2.1 写入文件-------------")
from pathlib import Path

# write_text() 方法接受单个实参，即要写入文件的字符串。
# 注意：Python 只能将字符串写入文本文件。
# 如果要将数值数据存储到文本文件中，必须先使用函数 str() 将其转换为字符串格式。

# write_text() 方法会在幕后完成几项工作。
# 首先，如果 path 变量对应的路径指向的文件不存在，就创建它。
# 其次，将字符串写入文件后，它会确保文件得以妥善地关闭。
path = Path('./10_file_exception/write1.txt')
path.write_text('I love programming.\n')

# write_text() 方法在到达文件末尾时停止写入。
# 如果要写入的字符串超过了文件末尾，文件末尾之后的内容将被删除。
path.write_text('I love programming.\n')
path.write_text('I love creating new games.\n')

print("-------------10.2.2 写入多行-------------")
# 要将多行写入文件，需要先创建一个字符串（其中包含要写入文件的全部内容），
# 再调用 write_text() 并将这个字符串传递给它。

contents = "I love programming.\n"
contents += "I love creating new games.\n"
contents += "I love solving problems.\n"
path = Path('./10_file_exception/write2.txt')
path.write_text(contents)

# 首先定义变量 contents，用于存储要写入文件的所有内容。
# 接下来，使用运算符 += 在该变量中追加这个字符串。
# 可根据需要执行这种操作任意多次，以创建任意长度的字符串。
# 这里在每行末尾都添加了换行符，让每个句子都占一行。

# 注意：在对 path 对象调用 write_text() 方法时，务必谨慎。
# 如果指定的文件已存在， write_text() 将删除其内容，并将指定的内容写入其中。
# 本章后面将介绍如何使用 pathlib 检查指定的文件是否存在。


print("-------------10.2.3 附加到文件-------------")
# 如果要给文件添加内容，而不是覆盖原有的内容，可以以附加模式打开文件。
# 你以附加模式打开文件时，Python 不会在返回文件对象前清空文件，而你写入到文件的行都将添加到文件末尾。
# 如果指定的文件不存在，Python 会为你创建一个空文件。

path = Path('./10_file_exception/write3.txt')
path.write_text('I love programming.\n')
path.write_text('I love creating new games.\n')


# 要将文本写入文件，需要在调用 open() 时提供另一个实参。
# 向 open() 函数传递字符串 'w' ，表示以写入模式打开文件。
# 打开文件时，可指定读取模式('r')、写入模式('w')、附加模式('a')或让你能够读取和写入文件的模式('r+')。
# 如果省略了模式实参，Python 将以默认的只读模式打开文件。
# 如果尝试以读取模式打开一个只写访问的文件，会引发异常。
# 如果尝试写入文件时它已被打开为只读模式，也会引发异常。
# 如果要写入的文件不存在，函数 open() 将自动创建它。
# 然而，以写入('w')模式打开文件时千万要小心，因为如果指定的文件已经存在，Python 将在返回文件对象前清空该文件。
